/**
 * https://leetcode-cn.com/problems/sqrtx/submissions/
 * 平方根
 * @param x 
 */
const mySqrt = (x: number): number => {
    // 边界判断
    if (x <= 1) return x

    // 类似二分查找的方法
    let left = 0,
        right = x,
        ans = 0

    while (left < right) {
        let mid = (left + right) >> 1
        // console.log(mid)
        // 平方
        let sq = mid * mid
        // 和x比较
        if (sq < x) {
            // 相乘还小于x, 往后找
            ans = mid; // 平方根有小数, 往下取整
            left = mid + 1;
        } else if (sq > x) {
            // 往前找
            right = mid;
        } else {
            // 刚好相等
            return mid;
        }
    }

    return ans
};

console.log(mySqrt(6))